<?php
namespace Common\Util;

class Util
{
	/**
	 * 发送短信
	 * @param int|string $mobile
	 * @param string $msg 信息
	 * @author 刘新
	 */	
	public static function sms($mobile, $msg)
	{
		return self::winnerLookSms($mobile, $msg);
	}
	
	/**
	 * 云信留客平台发送短信
	 * @param int|string $mobile 手机号
	 * @param string $msg 信息
	 * @author 刘新
	 */
	private static function winnerLookSms($mobile, $msg, $type = 1)
	{
		$acc = C('SMS_WINNERLOOK');
		$url = $acc['URL'] . '?userCode=' . $acc['USER_CODE'] . '&userPass=' . $acc['USER_PASS'] . '&DesNo=' . $mobile . '&Msg=' . $acc['MSG_TPL'][$type] . '&Channel=0';
		$url = sprintf($url, $msg);
		$result_xml = file_get_contents ( $url );
		$xml = simplexml_load_string ( $result_xml );
		return ( string ) $xml [0];
	}
	
	/**
	 * 生成验证码
	 * @param int|string $type 生成字符串包含的字符类型，默认只包含数字，1-包含数字和字母，2-包含数字、字母和中文
	 * @param int|string $length 生成随机字符的长度
	 * @return string|boolean 返回生成的随机字符串，失败返回false
	 * @author 刘新
	 */
	public static function randStr($length = 4, $type = '')
	{
		$number = range(0, 9);
		$lower = range('a', 'z');
		$upper = range('A', 'Z');
		$super = array(',',';','.','{','}','`','~','|','‘','“','’','”','，','、','。','?','？','$','￥','#','@');
		$str = array();
		switch (intval($type))
		{
			//大小写字母、数字和特殊字符
			case 2:
				$str = array_merge($str, $super);
			//大小写字母和数字
			case 1:
				$str = array_merge($str, $lower);
				$str = array_merge($str, $upper);
			//只包含数字
			default:
				$str = array_merge($str, $number);
		}
		
		//给数组随机排序
		shuffle($str);
		//随机取出length个元素
		$res = array_rand($str, $length);
		$rand = '';
		if($length == 1) {
			$rand = $str[$res];
		} else if($length > 1) {
			foreach($res as $val) {
				$rand .= $str[$val];
			}
		}
		
		return $rand;
	}
	
	/**
	 * curl远程调用
	 * @param string $url
	 * @param array $param
	 * @param array $option
	 * @author 刘新
	 */
	public static function curl($param, $option, $url = '', $cookie = array())
	{
		if(!$url) $url = C('FUND_DOMAIN');
		
		// 初始化
		$curlobj = curl_init($url);
		// 设置cURL会话执行之后直接返回数据，而不是输出数据；
		curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true);
		
		/** Cookie相关设置 **/
		if($cookie) {
			// 使用Cookie时，必须先设置时区，因为Cookie有有效期，不统一时区可能会导致Cookie过期等问题；
			date_default_timezone_set('PRC');
			//当将CURLOPT_COOKIESESSION设置为true时，curl会仅仅传递一个session cookie，忽略其他的cookie
			curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE);
			//设置从哪个文件中读取cookie，只需写文件名，无需带上路径和扩展名
			curl_setopt($curlobj, CURLOPT_COOKIEFILE, "cookiefile");
			//设置将cookie存储在哪个文件中，只需写文件名，无需带上路径和扩展名
			curl_setopt($curlobj, CURLOPT_COOKIEJAR, "cookiefile");
			//设置要传送的cookie，这里为session_id，因为服务器端需要获取客户端传递过来的session_id，进一步跟踪用户的状态；
			curl_setopt($curlobj, CURLOPT_COOKIE, session_name . "=" . session_id());
		}
		
		//不输出头文件的信息
		curl_setopt($curlobj, CURLOPT_HEADER, 0);
		
		//POST请求方式
		if($option['method'] == 3) {
			//以POST方式执行cURL会话
			curl_setopt($curlobj, CURLOPT_POST, 1);
			curl_setopt($curlobj, CURLOPT_POSTFIELDS, $param);
			curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8"));
		} else if($option['method'] == 2 || $option['method'] == 1) {
			curl_setopt($curlobj, CURLOPT_URL, $url . '?' . 'json=' . $param['json']);
		}
		// 执行登录
		$res = curl_exec($curlobj);
		return $res;
	}

	/**
	 * 加密
	 * @param string $content 加密字符串
	 * @param string $salt 密码盐
	 * @return string 加密之后的字符串
	 * @author 刘新
	 */
	public static function encrypt($content, $salt = false)
	{
		if(!$salt) $salt = global_config('web_salt');
		return hash('md5',hash('md5',$content.$salt.$content).$content);
	}
	
}